The present invention generally relates to a storage system that comprises a plurality of storage system modules.
A storage system having a dynamic capacity allocation function is known as one storage system that comprises a plurality of physical storage devices (for example, refer to Japanese Patent Laid-open No. 2005-011316 and Japanese Patent Laid-open No. 2006-302258). This storage system comprises a virtual logical volume (hereinafter, referred to as a “virtual volume”) and a storage area pool (hereinafter, referred to as a “pool”). The virtual volume is comprised of a plurality of virtual storage areas (hereinafter, referred to as “virtual areas”). The pool is comprised of a plurality of real storage areas (hereinafter, referred to as “real areas”). A real area is a storage area based on a plurality of physical storage devices.
In accordance with the dynamic capacity allocation function, the occurrence of a data write to a virtual area in the virtual volume triggers the allocation of a real area in the pool to this virtual area, and the data is written to this allocated real area.
Incidentally, a storage system configured with a plurality of storage system modules (hereinafter, abbreviated as “modules”) is conceivable. Hereinafter, a storage system configured using a plurality of modules will be called a “modular storage system”. Each module comprises a plurality of physical storage devices, and a controller for controlling access to the plurality of physical storage devices. The plurality of modules can be operated and managed so as to appear to be a single storage system. Further, the storage capacity and throughput of the storage system can be changed as needed by increasing or decreasing the modules.
When the above-mentioned dynamic capacity allocation function is employed in a modular storage system, for example, the configuration shown in FIG. 30 is conceivable.
That is, a modular storage system is configured with a module (A) having a port (A) and a pool (A), and a module (B) having a port (B) and a pool (B). Modules (A) and (B) are managed as though they are a single storage system. For this reason, the host (H) recognizes the single storage system as having ports (A) and (B).
Only module (A) comprises the virtual volume (VVOL). Since the host (H) is able to access the virtual volume (VVOL) via either port (A) or port (B), in addition to a first path (P1), which links port (A) to the virtual volume (VVOL), a second path (P2), which links port (B) to the virtual volume (VVOL) is established.
If consideration is given to a case in which a data write request (W) is sent from the host (H) to a virtual area (V) in the virtual volume (VVOL), the following four scenarios are conceivable.
Case W1: Module (A) receives the write request (W) via the first path (P1), and allocates a real area in pool (A) to the virtual area (V).
Case W2: Module (A) receives the write request (W) via the first path (P1), and allocates a real area in pool (B) to the virtual area (V).
Case W3: Module (A) receives the write request (W) via the second path (P2), and allocates a real area in pool (A) to the virtual area (V).
Case W4: Module (A) receives the write request (W) via the second path (P2), and allocates a real area in pool (B) to the virtual area (V).
Although not shown in FIG. 30, even if consideration is given to a case in which a read request (R) for data from a virtual area (V) is sent from the host (H), the following four scenarios, that is, the same kind of cases as those described hereinabove, are conceivable.
Case R1: Module (A) receives the read request (R) via the first path (P1), reads out the data from a real area in pool (A) and sends this data to the host (H).
Case R2: Module (A) receives the read request (R) via the first path (P1), reads out the data from a real area in pool (B) and sends this data to the host (H).
Case R3: Module (A) receives the read request (R) via the second path (P2), reads out the data from a real area in pool (A) and sends this data to the host (H).
Case R4: Module (A) receives the read request (R) via the second path (P2), reads out the data from a real area in pool (B) and sends this data to the host (H).
In the above-described cases W2 through W4 and R2 through R4, communications (hereinafter, referred to as “inter-module communications”) are required between module (A) and module (B). For example, in Case W2, inter-module communications for allocating a real area in pool (B) to the virtual area (V) take place. In Case W3, inter-module communications for transferring the write request (W) via port (B) to module (A) take place. In Case W4, inter-module communications for transferring the write request (W) via port (B) to module (A), and inter-module communications for allocating a real area in pool (B) to the virtual area (V) take place.
In accordance with the considerations described above, I/O performance can degrade as a result of the occurrence of inter-module communication even when a write request/read request (I/O request) is by way of the same port (A) or (B) (More specifically, the length of time from when the modular storage system receives an I/O request from the host (H) until a response is returned to the host (H) increases.). Further, since the number of times that inter-module communications occur will differ when the port through which the I/O requests (write request/read request) pass differs, I/O performance may differ.